Il percorso da una struttura ad un Tipo Astratto di Dati (TAD) segna il passaggio da una "Scatola di Vetro", in cui ogni cavo interno è visibile, a una "Scatola Nera" in cui l' interfaccia è separata dall' implementazione. Questo cambiamento garantisce incapsulamento: gli utenti interagiscono con funzioni come leggi o combinare senza dover sapere come viene calcolato o memorizzato il ricavo.
1. Architettura delle Classi
Ogni classe definisce un identità tipica univoca. Anche se due classi condividono membri identici, C++ le considera incompatibili. Usando typedef e dichiarazioni anticipato (ad esempio, class Schermo;) ci permette di progettare relazioni complesse mantenendo l'astrazione. Spesso utilizziamo versioni sintetizzate di costruttori, come Sales_data() = default;, per mantenere la comodità dei tipi predefiniti ($$totale = trans;$$).
2. Funzioni di Interfaccia Non-Membro
Funzioni come leggi sono Funzioni Non-Membro Correlate alla Classe. Sono parte dell'interfaccia ma non della classe stessa, spesso richiedendo amicizia per accedere ai dati privati.